home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib10.dsk / SHIP SHOOT.bas < prev    next >
BASIC Source File  |  2023-02-26  |  4KB  |  122 lines

  1. 10  REM  **********************
  2. 11  REM  *    SHIP SHOOT      *
  3. 12  REM  *   BY ROB SMYTHE    *
  4. 13  REM  * COPYRIGHT (C) 1982 *
  5. 14  REM  * BY MICRO-SPARC INC *
  6. 15  REM  * LINCOLN, MA. 01773 *
  7. 16  REM  **********************
  8. 19 :
  9. 20  REM  SET UP PROGRAM
  10. 30 :
  11. 40  IF  PEEK(768) + PEEK(769) =  PEEK(770)  THEN 80: REM  SKIP UNLESS FIRST RUN
  12. 50  GOSUB 890: REM  INIT HRCG
  13. 60  PRINT D$;"BLOAD WORLD MAP.PIC,A$4000": REM  PICTURE ON PAGE 2
  14. 70  POKE 768,1: POKE 769,2: POKE 770,3: REM  SPECIFIC GARBAGE POKED WHERE LINE 10 CAN DETECT IT AND SKIP INTIALIZING AND PICTURE-LOADING ROUTINES
  15. 80  PRINT  CHR$(16); CHR$(11)
  16. 90  HGR : POKE  -16302,0
  17. 100 KB =  -16384: REM  KEYPRESS
  18. 110 G$ =  CHR$(7): REM  BELL
  19. 120 BU =  -16286: REM  BUTTON 0
  20. 130  GOSUB 1080: REM  INITIALIZE HRCG CURSOR CONTROLS
  21. 140 SHIP$ = CB$ +"     " +CC$ +" :^; " +CC$ +" (%) " +CC$ +" =!- " +CC$ +"     " +CD$
  22. 150 :
  23. 160  REM  START OF GAME
  24. 170 :
  25. 180  PRINT CP$: VTAB 10: PRINT "LEVEL OF DIFFICULTY (1 OR 2) ? ";: GET A$: PRINT A$
  26. 190 LEVEL =  VAL(A$): IF LEVEL <1  OR LEVEL >2  THEN  PRINT G$;: GOTO 180
  27. 200  POKE  -16368,0:AA = 20:BB = 10:ENERGY% = 100:AMMO = 10
  28. 210  PRINT PT$CP$: REM  TRANSPARENT WRITING, CLEAR SCREEN - PUTS PAGE 2 PICTURE ON PAGE 1
  29. 220  PRINT CA$1: REM  SWITCH TO CHARACTER SET 1 (BYTE-CHANGED.SET)
  30. 230  VTAB 2: HTAB 2: PRINT "ENERGY: "
  31. 240  VTAB 2: HTAB 31: PRINT "AMMO: "AMMO
  32. 250 :
  33. 260  REM  MAIN GAME LOOP
  34. 270 :
  35. 280  GOSUB 510: REM  FIND PADDLE POSITION
  36. 290 ENERGY% = ENERGY% -1: VTAB 2: HTAB 10
  37. 300  HTAB 10: PRINT ENERGY%" "
  38. 310  IF ENERGY% = 0  THEN 730
  39. 320  GOSUB 560: REM  FIRE?
  40. 330  IF  PEEK(KB) >128  THEN  PRINT PN$CA$0CP$: POKE  -16368,0: END : REM  EARLY EXIT
  41. 340 :
  42. 350  REM  MOVE TOWARD PADDLE POSITION
  43. 360 :
  44. 370  IF PA = (AA)  THEN 390
  45. 380 AA = AA +1 -2 *(PA <AA)
  46. 390  IF PB = BB  THEN 410
  47. 400 BB = BB +1 -2 *(PB <BB)
  48. 410  IF BB >19  THEN BB = 19
  49. 420  IF AA >35  THEN AA = 35
  50. 430  HTAB (AA): VTAB (BB): PRINT SHIP$
  51. 440  GOSUB 560: REM  FIRE?
  52. 450  GOSUB 800: REM  MOVE TARGET
  53. 460  IF LEVEL = 2  THEN  GOSUB 800
  54. 470  GOTO 280
  55. 480 :
  56. 490  REM  FIND PADDLE POSITION
  57. 500 :
  58. 510 PA =  PDL(0):PB =  PDL(1):PA =  INT(PA/255 *38 +1):PB =  INT(PB/255 *22 +1)
  59. 520  RETURN 
  60. 530 :
  61. 540  REM  FIRE IF BUTTON PUSHED
  62. 550 :
  63. 560  IF  PEEK(BU) <128  THEN  RETURN : REM  BUTTON NOT BEING PUSHED
  64. 570  HCOLOR= 5
  65. 580  HPLOT 10,190 TO 140,95 TO 269,190
  66. 590  FOR J = 1 TO 10: NEXT 
  67. 600  HCOLOR= 0: HPLOT 10,190 TO 140,95 TO 269,190
  68. 610 AMMO = AMMO -1: VTAB 2: HTAB 37: PRINT AMMO;" "
  69. 620  IF AMMO = 0  THEN 680
  70. 630  IF AA <18  OR AA >20  OR BB <10  OR BB >11  THEN  RETURN : REM  NO HIT UNLESS TARGET IS WITHIN THESE CONSTRAINTS
  71. 640 HIT = HIT +1: PRINT G$;: RETURN 
  72. 650 :
  73. 660  REM  POST MORTEM - OUT OF AMMO
  74. 670 :
  75. 680  PRINT CA$0PN$CP$: VTAB 10: PRINT "OUT OF AMMUNITION": PRINT : PRINT "NUMBER OF HITS..."HITS
  76. 690  GOTO 740
  77. 700 :
  78. 710  REM  POST MORTEM - OUT OF ENERGY
  79. 720 :
  80. 730  PRINT CA$0PN$CP$: VTAB 10: PRINT "OUT OF ENERGY": PRINT : PRINT "NUMBER OF HITS..."HITS
  81. 740  VTAB 20: PRINT "PLAY AGAIN (Y/N)? ";CE$;: GET A$: PRINT A$
  82. 750  IF A$ = "N"  THEN  END 
  83. 760  GOTO 180
  84. 770 :
  85. 780  REM  RANDOM MOVE OF SHIP
  86. 790 :
  87. 800 X =  INT( RND(1) *3 -1):Y =  INT( RND(1) *3 -1):AA = AA +X: IF AA >35  THEN AA = 35
  88. 810  IF AA <1  THEN AA = 1
  89. 820 BB = BB +Y: IF BB >19  THEN BB = 19
  90. 830  IF BB <1  THEN BB = 1
  91. 840  HTAB (AA): VTAB (BB): PRINT SHIP$
  92. 850  RETURN 
  93. 860 :
  94. 870  REM  INITIALIZE HRCG
  95. 880 :
  96. 890  ONERR  GOTO 1010
  97. 900  TEXT : HOME : VTAB 12: HTAB 10: PRINT "SHIP SHOOT BY ROB SMYTHE": VTAB 14: HTAB 15: PRINT "PLEASE WAIT....":ADRS = 0
  98. 910  PRINT  CHR$(4);"BLOAD RBOOT": CALL 520
  99. 920 ADRS =  USR(0),"HRCG"
  100. 930  POKE 216,0
  101. 940  IF ADRS <0  THEN ADRS = ADRS +65536
  102. 950 CS = ADRS -768: HIMEM: CS
  103. 960 D$ =  CHR$(4)
  104. 970  PRINT D$;"BLOAD BYTE-CHANGED.SET,A";CS
  105. 980 CH =  INT(CS/256):CL = CS -CH *256
  106. 990  POKE ADRS +7,CL: POKE ADRS +8,CH: CALL ADRS +3
  107. 1000  RETURN 
  108. 1010  TEXT 
  109. 1020  PRINT "ERROR IN RLOAD OR RBOOT"
  110. 1030  POKE 216,0
  111. 1040  STOP 
  112. 1050 :
  113. 1060  REM  CURSOR CONTROL VARIABLES
  114. 1070 :
  115. 1080 CA$ =  CHR$(1):CB$ =  CHR$(2):CC$ =  CHR$(3):CD$ =  CHR$(4):CE$ =  CHR$(5):CF$ =  CHR$(6):CI$ =  CHR$(9):CK$ =  CHR$(11):CL$ =  CHR$(12):CN$ =  CHR$(14):CO$ =  CHR$(15):CP$ =  CHR$(16):CS$ =  CHR$(19):CT$ =  CHR$(20)
  116. 1090 CV$ =  CHR$(22):CW$ =  CHR$(23):CY$ =  CHR$(25):CZ$ =  CHR$(26)
  117. 1100 P1$ = CO$ +CA$:P2$ = CO$ +CB$:PT$ = CO$ +CT$:PN$ = CO$ +CP$
  118. 1110  REM  P1$ - DISPLAY PAGE 1
  119. 1120  REM  P2$ - DISPLAY PAGE 2
  120. 1130  REM  PT$ - TRANSPARENT PRINTING
  121. 1140  REM  PN$ - NORMAL PRINTING
  122. 1150  RETURN